package models

import (
	"gorm.io/gorm"
	"regi/regirpc/regirpc"
)

type Regi struct {
	gorm.Model
	Name     string `gorm:"type:varchar(30);not null;"`
	HospName string `gorm:"type:varchar(50);not null;"`
	DepName  string `gorm:"type:varchar(30);not null;"`
	Tel      string `gorm:"type:char(11);not null;"`
}

func (r *Regi) RegiAdd(db *gorm.DB) error {
	return db.Debug().Create(r).Error
}

func (r *Regi) RegiUpdate(regi Regi) error {
	return DB.Debug().Updates(r).Error
}

func (r *Regi) RegiShowById(regi Regi, id int64) error {
	return DB.Debug().Where("id = ?", id).First(r).Error
}

func (r *Regi) RegiDel(regi Regi, id int64) error {
	return DB.Debug().Where("id = ?", id).Delete(r).Error
}

func (r *Regi) RegisList(regi Regi, in *regirpc.RegiListRequest) ([]*regirpc.RegiList, error) {
	var regis []*regirpc.RegiList

	err2 := DB.Debug().Model(&regi).
		Select(
			"regis.id as regi_id",
			"regis.name",
			"regis.hosp_name",
			"regis.dep_name",
			"regis.tel",
		).Scopes(Paginate(int(in.Page), int(in.Size))).Find(&regis).Error
	return regis, err2
}
